package com.larly.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;

@Configuration
public class CorsConfig {

    /**
     * 跨域过滤器
     */
    @Bean
    public CorsFilter corsFilter() {
        // 1. 创建跨域配置对象
        CorsConfiguration config = new CorsConfiguration();
        
        // 允许的源（前端域名），* 表示允许所有，生产环境建议指定具体域名
        config.addAllowedOriginPattern("*"); 
        // 允许携带 Cookie（前后端分离场景下需要开启）
        config.setAllowCredentials(true);
        // 允许的请求方法（GET, POST, PUT, DELETE 等）
        config.addAllowedMethod("*");
        // 允许的请求头（如 Content-Type, Authorization 等）
        config.addAllowedHeader("*");
        // 暴露的响应头（前端需要获取的自定义头，如 Token 等）
        config.addExposedHeader("Authorization");
        // 预检请求的有效期（秒），避免频繁预检
        config.setMaxAge(3600L);

        // 2. 配置跨域路径匹配规则
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        // 对所有路径应用跨域配置
        source.registerCorsConfiguration("/**", config);

        // 3. 创建并返回跨域过滤器
        return new CorsFilter(source);
    }
}
    